<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 1.arguments在JS中译作参数,只有在函数中才存在,是一个伪数组
        function getSum1(a,b,c){
            console.log(arguments); 
            let sum = 0
            for(let i = 0; i < arguments.length;i++){
                sum += arguments[i]
            }
            return sum
        }
        console.log(getSum1(1,2));

        // 2.剩余参数和arguments类似,也是接收每一次调用函数的实参数组,剩余参数是一个真数组,可以接收所有,也可以接收一部分
        
        // 2.1 接收全部
        function getSum2(...args){
            console.log(args);
            let sum = 0
            for(let i = 0; i < arguments.length;i++){
                sum += args[i]
            }
            return sum
        }
        console.log(getSum2(1,2,3,4));

        // 2.2 接收一部分
        function fn(a,b,c,d,...args){
            console.log(args); // 因为排除了a,b,c,d四项,所以是 [334,555]
        }
       
        fn('前端','后端',223,333,334,555)

        // 3.扩展运算符/展开运算符:把一个数组中的内容,展开变成参数序列;
        //    剩余参数:把参数序列赋值给一个数组!!!
        //    扩展运算符:把数组中元素展开变成参数序列让某个函数使用

        // 1.使用展开运算符的方法,一般都是参数个数不固定的!!!
        let arr1 = ['aaa','bbb','ccc','ddd','eee']
        // 写到实参位置的... ,就是展开运算符;写到形参位置的 ... 就是剩余参数.
        console.log(...arr1);

        // 2.求最大值,最小值
        console.log(Math.max(...[1,2,3,4,5,6]));
        console.log(Math.min(...[1,2,3,4,5,6]));
    </script>
</body>
</html>